Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';

Ext.apply(Ext.form.VTypes, {
			/* val指当前文本框值，field指当前文本框组件 */
			password : function(val, field) {
				var rnt = false;
				/* 待比较目标文本框组件 */
				if (field.confirmTo) {
					var pwd = Ext.get(field.confirmTo);
					if (val == pwd.getValue()) {
						rnt = true;
					} else {
						// Ext.Msg.alert('提示', '密码确认错误！');
						rnt = false;
					}
				}
				return rnt;
			}
		});

document.write("<script src=\"" + context
		+ "/app/jlbd/js/sellist.js\"></script>");

var querykey = 'list';
var pageSize = 15;
var showchk = false;
var ds;

var chkColumModel = [];
chkColumModel.push({
			'header' : '&nbsp;',
			'dataIndex' : 'PAGINATION_NUMBER',
			sortable : true,
			clazz : 'PAGINATION_NUMBER'
		});
chkColumModel.push({
			'header' : '监理姓名',
			'dataIndex' : 'NAME',
			sortable : true,
			clazz : '',
			renderer : renderHeader
		});
chkColumModel.push({
			'header' : '性别',
			'dataIndex' : 'SEX',
			sortable : true,
			clazz : 'SEX',
			renderer : renderHeader
		});
chkColumModel.push({
			'header' : '联系电话',
			'dataIndex' : 'PHONE',
			sortable : true,
			clazz : '',
			renderer : renderHeader
		});
/*
 * chkColumModel.push({ 'header' : '所在单位', 'dataIndex' : 'GROUPNAME', sortable :
 * true, clazz : '', renderer : renderHeader });
 */
chkColumModel.push({
			'header' : '设备编号',
			'dataIndex' : 'NU_MOBILECODE',
			sortable : true,
			clazz : '',
			renderer : renderHeader
		});
chkColumModel.push({
			'header' : '监理标段',
			'dataIndex' : 'NU_BD',
			sortable : true,
			clazz : 'NU_BD',
			renderer : renderHeader
		});
chkColumModel.push({
			'header' : '监理标段名称',
			'dataIndex' : 'NU_GC',
			sortable : true,
			clazz : 'NU_GC',
			renderer : renderHeader
		});
chkColumModel.push({
			'header' : '&nbsp;',
			'dataIndex' : 'NU_ID',
			sortable : true,
			clazz : 'NU_ID',
			renderer : renderHeader
		});

var cm = new Ext.grid.ColumnModel(chkColumModel);

var fields = ['PAGINATION_NUMBER', 'NU_ID', 'NU_USERID', 'NU_BD', 'NU_GC',
		'NU_MOBILECODE', 'NAME', 'JOB', 'PHONE', 'SEX', 'GROUPNAME',
		'GROUPNAME', 'VALID', 'RATING'];

function initQueryList() {
	var toolbar = new Ext.Toolbar({
		id : querykey + '_toolbar',
		autoWidth : true,
		autoShow : true,
		items : [{
			iconCls : 'query',
			text : '数据查询',
			handler : function() {
				var cellist = querysellist('监管标段', 'nubdid', 'nubd', '', true);

				var queryForm = new Ext.FormPanel({
							labelWidth : 75, // label settings here cascade
							// unless
							// overridden
							frame : false,
							bodyStyle : 'padding:5px 5px 0',
							width : 350,
							defaults : {
								width : 230
							},
							defaultType : 'textfield',

							items : [{
										fieldLabel : '姓名',
										id : 'cname',
										name : 'cname'
									}, {
										fieldLabel : '电话',
										id : 'cmobile',
										name : 'cmobile'
									}, {
										fieldLabel : '设备编号',
										id : 'cmobilecode',
										name : 'cmobilecode'
									}, cellist, {
										xtype : 'hidden',
										name : 'nubdid',
										id : 'nubdid'
									}, {
										xtype : 'hidden',
										name : 'nubd',
										id : 'nubd'
									}]
						});

				var formUrl = context + '/system/result4form.jsp?1=1';

				if ($('cname_')) {
					formUrl += '&cname=' + $('cname_').value;
				}

				if ($('cmobile_')) {
					formUrl += '&cmobile=' + $('cmobile_').value;
				}

				if ($('nubdid1_')) {
					formUrl += '&nubdid=' + $('nubdid1_').value;
					formUrl += '&nubdid_=' + $('nubd1_').value;
					formUrl += '&nubd=' + $('nubd1_').value;
				}

				if ($('cmobilecode_')) {
					formUrl += '&cmobilecode=' + $('cmobilecode_').value;
				}

				queryForm.getForm().load({
							url : encodeURI(formUrl),
							waitTitle : '提示',
							waitMsg : '正在加载数据,请稍候...',
							animEl : "loding",
							success : function(form, action) {

							},
							failure : function(form, action) {
								Ext.Msg.alert('初始化查询项失败');
							}
						});

				var queryWin = new Ext.Window({
					renderTo : Ext.getBody(),
					layout : 'fit',
					width : 450,
					height : 300,
					title : '数据查询',
					resizable : true,
					plain : true,
					modal : true,

					items : [queryForm],

					buttons : [{
						id : 'objectQueryButton',
						text : '查 询',
						handler : function() {
							createHidden('cname_', queryForm.form
											.findField('cname').getValue());
							createHidden('cmobile_', queryForm.form
											.findField('cmobile').getValue());
							createHidden('cmobilecode_', queryForm.form
											.findField('cmobilecode')
											.getValue());
							createHidden('nubdid1_', queryForm.form
											.findField('nubdid').getValue());
							createHidden('nubd1_', queryForm.form
											.findField('nubd').getValue());

							ds.reload({
										params : getQueryTestParams(),
										callback : function(r, options, success) {
											initInfoList(r, options, success);
										}
									});
							queryWin.close();
						}
					}, {
						text : '重 置',
						handler : function() {
							queryForm.form.reset();
						}
					}, {
						text : '关 闭',
						handler : function() {
							queryWin.close();
							// queryObjectTestWin =
							// null;
							// queryWin = null;
						}
					}]
				});

				queryWin.show(this);
			}
		}, '-', {
			text : '增加监理',
			iconCls : 'add',
			handler : function() {
				var cellist = selitemlist('监理标段', 'nubdid', 'nubd',
						'nubditemid', 'nubditem', '', true, userId);

				var userRating = new Ext.form.ComboBox({
							id : '_rating',
							name : 'userrating',
							fieldLabel : '级别',
							xtype : 'combo',
							selectOnFocus : true,
							emptyText : '请选择..',
							forceSelection : true,
							triggerAction : 'all',
							mode : 'local', // 数据模式,local为本地模式
							valueField : 'id', // 提交表单时，下拉框的值
							displayField : 'name', // 显示在页面上下拉框的值
							editable : false,
							allowBlank : false,
							store : new Ext.data.SimpleStore({ // 填充的数据
								fields : ['id', 'name'],
								data : [['2', '监理员'], ['1', '总监']]
							}),
							listeners : {
								select : function(combo, record, index) {
									// alert(record.data.id);
									// alert(record.data.name);
									neuForm.form.findField('rating')
											.setValue(record.data.id);
								}
							}
						});

				var neuForm = new Ext.FormPanel({
							labelWidth : 100, // label settings here cascade
							// unless
							// overridden
							frame : false,
							bodyStyle : 'padding:5px 5px 0',
							width : 350,
							defaults : {
								width : 230
							},
							defaultType : 'textfield',

							items : [{
										fieldLabel : '登录帐号',
										vtype : 'alphanum',
										allowBlank : false,
										emptyText : '请输入登录ID',
										name : 'logid'
									}, {
										fieldLabel : '登录密码',
										inputType : 'password',
										allowBlank : false,
										id : 'pwd',
										name : 'pwd'
									}, {
										fieldLabel : '密码确认',
										inputType : 'password',
										allowBlank : false,
										id : 'pwd1',
										name : 'pwd1',
										vtype : 'password',
										confirmTo : 'pwd'
									}, {
										fieldLabel : '姓名',
										id : 'uname',
										name : 'uname',
										allowBlank : false
									}, userRating, new Ext.form.RadioGroup({
												fieldLabel : "性别",
												// //RadioGroup.fieldLabel 标签与
												// Radio.boxLabel 标签区别
												items : [new Ext.form.Radio({ // 以上相同
													id : "branch1",
													boxLabel : "男",
													name : "sex",
													inputValue : "男",
													checked : 'checked',
													listeners : {
														check : function(
																checkbox,
																checked) {
															if (checked) {

															}
														}
													}
												}), new Ext.form.Radio({ // 三个必须项
													id : "branch0",
													// checked : true, //
													// 设置当前为选中状态,仅且一个为选中.
													boxLabel : "女", // Radio标签
													name : "sex", // 用于form提交时传送的参数名
													inputValue : "女", // 提交时传送的参数值
													listeners : {
														check : function(
																checkbox,
																checked) { // 选中时,调用的事件
															if (checked) {

															}
														}
													}
												})]
											}), {
										fieldLabel : '电话',
										id : 'uphone',
										name : 'uphone',
										allowBlank : false
									}, {
										fieldLabel : '设备编号',
										id : 'numcode',
										name : 'numcode',
										allowBlank : false
									}, cellist, {
										xtype : 'hidden',
										name : 'nubdid',
										id : 'nubdid'
									}, {
										xtype : 'hidden',
										name : 'nubd',
										id : 'nubd'
									}, {
										xtype : 'hidden',
										name : 'nubditemid',
										id : 'nubditemid'
									}, {
										xtype : 'hidden',
										name : 'nubditem',
										id : 'nubditem'
									}, {
										xtype : 'hidden',
										name : 'rating',
										id : 'rating'
									}]
						});

				/*
				 * neuForm.getForm().load({ url : encodeURI(formUrl), waitTitle :
				 * '提示', waitMsg : '正在加载数据,请稍候...', animEl : "loding", success :
				 * function(form, action) { }, failure : function(form, action) {
				 * Ext.Msg.alert('初始化查询项失败'); } });
				 */

				var win = new Ext.Window({
					renderTo : Ext.getBody(),
					layout : 'fit',
					width : 450,
					height : 350,
					title : '监理人员信息管理',
					resizable : true,
					plain : true,
					modal : true,

					items : [neuForm],

					buttons : [{
						id : 'saveButton',
						text : '保 存',
						handler : function() {
							if (neuForm.getForm().isValid()) {
								Ext.MessageBox.wait('提交保存过程中...');

								neuForm.getForm().submit({
									url : context
											+ '/app/svaction.do?method=save',
									method : "POST",
									success : function(form, action) {
										Ext.MessageBox.hide();
										Ext.MessageBox.alert('提示',
												'已成功添加监理人员信息');
										ds.reload({
													params : getQueryTestParams(),
													callback : function(r,
															options, success) {
														initInfoList(r,
																options,
																success);
													}
												});
										win.close();
									},
									failure : function(form, action) {
										Ext.MessageBox.hide();
										if (action.result.errCode == '0') {
											Ext.Msg.alert('提示', '您没有增加监理的权限！');
										} else if (action.result.errCode == '-1') {
											Ext.Msg
													.alert('提示',
															'登录帐号重复,请重新设定！');
										} else if (action.result.errCode == '-2') {
											Ext.Msg.alert('提示',
													'设备编号已被占用,请重新设定！');
										} else {
											Ext.Msg.alert('提示', '未知的错误异常！');
										}
									}
								});
							}
						}
					}, {
						text : '重 置',
						handler : function() {
							neuForm.form.reset();
						}
					}, {
						text : '关 闭',
						handler : function() {
							win.close();
						}
					}]
				});

				win.show(this);
			}
		}]
	});

	toolbar.addClass('ExtToolBar');

	toolbar.render('listToolbarArea');

	ds = new Ext.data.JsonStore({
				idProperty : 'PAGINATION_NUMBER',
				remoteSort : false,
				totalProperty : 'totalCount',
				root : 'queryList',
				fields : fields,
				proxy : new Ext.data.HttpProxy({
							url : context + '/app/svaction.do?method=list'
						})
			});

	/* 设置自定义参数 */
	ds.on('beforeload', function(thiz, options) {
				var params = getQueryTestParams();
				Ext.apply(thiz.baseParams, params);
			});

	storeOnLoad(0);
}

function getQueryTestParams(key) {
	return {
		start : 0,
		limit : pageSize,
		cname : $('cname_') ? $('cname_').value : '',
		cmobile : $('cmobile_') ? $('cmobile_').value : '',
		cmobilecode : $('cmobilecode_') ? $('cmobilecode_').value : '',
		nubdid : $('nubdid1_') ? $('nubdid1_').value : ''
	};
}

function storeOnLoad(start) {
	Ext.MessageBox.wait('加载数据过程中...');

	ds.load({
				params : {
					start : start,
					limit : pageSize
				},
				callback : function(r, options, success) {
					initInfoList(r, options, success);
				}
			});
}

function storeReload(start) {
	Ext.MessageBox.wait('加载数据过程中...');

	ds.reload({
				params : {
					start : start,
					limit : pageSize
				},
				callback : function(r, options, success) {
					initInfoList(r, options, success);
				}
			});
}

function initInfoList(r, options, success) {
	if (success == false) {
		Ext.Msg.alert('ERROR', '加载数据出现异常.');
	} else {
		var total = ds.getCount();// 数据行数

		while ($(querykey).rows.length > 1) {
			$(querykey).deleteRow($(querykey).rows.length - 1);
		}

		var arr = [];
		for (var j = 0; j < total; j++) {
			var record = ds.getAt(j);

			var tr = $(querykey).insertRow($(querykey).rows.length);
			tr.id = 'tr_' + j;

			var i = 0;
			Ext.each(chkColumModel, function(item) {
				var td = tr.insertCell(-1);
				td.className = item.clazz;
				if (showchk && i == 0) {
					td.innerHTML = '<div class="divn"><input type="checkbox" name="chkitem" value="'
							+ j
							+ '">&nbsp;'
							+ renderHeader(record.data[item.dataIndex], cm,
									record, j, i, ds) + '</div>';
				} else {
					td.innerHTML = '<div class="divn">'
							+ renderHeader(record.data[item.dataIndex], cm,
									record, j, i, ds) + '</div>';
				}

				i++;
			});
		}

		var ys = ds.getTotalCount() % pageSize;

		var sh = parseInt(ds.getTotalCount() / pageSize);

		var totalPage = (ys == 0 ? sh : sh + 1);

		var pageNO = parseInt(options.params.start / options.params.limit) + 1;

		var str1 = '共' + ds.getTotalCount() + '条数据';

		if (ds.getTotalCount() > 0) {
			str1 += ',第' + pageNO + '/' + totalPage + '页';
		}

		$('pageDisplay').innerHTML = str1;

		var str = '';

		if (pageNO > 1) {
			str += '<a href="javascript:storeReload(\'0\');">首页</a>';
		} else if (totalPage > 1) {
			str += '首页';
		}

		if (pageNO > 1) {
			var start = pageSize * (pageNO - 2)

			str += '&nbsp;<a href="javascript:storeReload(\'' + start
					+ '\');">上一页</a>';
		}

		if (pageNO < totalPage) {
			var start = pageSize * pageNO

			str += '&nbsp;<a href="javascript:storeReload(\'' + start
					+ '\');">下一页</a>';
		}

		if (pageNO < totalPage) {
			var start = pageSize * (totalPage - 1)

			str += '&nbsp;<a href="javascript:storeReload(\'' + start
					+ '\');">尾页</a>';
		} else if (pageNO == totalPage && pageNO > 1) {
			str += '尾页';
		}

		$('pageRoll').innerHTML = str;

		Ext.MessageBox.hide();
	}
}

function renderHeader(value, cellmeta, record, rowIndex, columnIndex, store) {
	var fieldName = cm.getDataIndex(columnIndex);
	if (fieldName == 'NAME' && record.data['VALID'] == '0') {
		if (record.data['RATING'] != 1 && record.data['RATING'] != 2) {
			$('tr_' + rowIndex).style.backgroundColor = '#FFFFCC';
			$('tr_' + rowIndex).title = '该用户身份发生变化,已不是监理人员,建议进行删除';
		}

		var str = '<a title="编辑监理人员信息" href="javascript:handleEdit(\''
				+ record.data['NU_ID'] + '\');">' + value + '</a>';

		return str;
	} else if (fieldName == 'NU_ID') {
		var str = '<a href="javascript:handleFlag(\'' + record.data['NU_ID']
				+ '\', \'-1\');">冻结</a>';

		if (record.data['VALID'] == '-1') {
			str = '<a href="javascript:handleFlag(\'' + record.data['NU_ID']
					+ '\', \'0\');">激活</a>';
			$('tr_' + rowIndex).title = '该监理人员帐号已被冻结';
			$('tr_' + rowIndex).style.backgroundColor = '#ffff99';
		}

		str += '&nbsp;<a href="javascript:handleDel(\'' + record.data['NU_ID']
				+ '\');">删除</a>';

		return str;
	}
	return value;
}

/**
 * 删除监理人员信息
 * 
 * @param {}
 *            id
 */
function handleDel(id) {
	Ext.MessageBox.confirm('提示', '确定删除监理人员', function(btn) {
		if (btn == 'yes') {
			Ext.MessageBox.wait('删除过程中...');
			Ext.Ajax.request({
						url : context + '/app/svaction.do?method=delete',
						method : "POST",
						async : false,
						params : {
							id : id
						},
						success : function(response, options) {
							var o = Ext.util.JSON.decode(response.responseText);
							if (!o.success) {
								Ext.Msg.alert('提示', '删除监理人员信息失败！');
							} else {
								Ext.Msg.alert('提示', '删除监理人员信息成功！');
								ds.reload({
											params : getQueryTestParams(),
											callback : function(r, options,
													success) {
												initInfoList(r, options,
														success);
											}
										});
							}
						}
					});
		}
	});
}

/**
 * 删除监理人员信息
 * 
 * @param {}
 *            id
 * @param {}
 *            flag
 */
function handleFlag(id, flag) {
	var msg = '冻结该监理人员';

	if (flag == '0') {
		msg = '激活该监理人员';
	}

	Ext.MessageBox.confirm('提示', '确定' + msg, function(btn) {
		if (btn == 'yes') {
			Ext.MessageBox.wait('提交处理过程中...');
			Ext.Ajax.request({
						url : context + '/app/svaction.do?method=flag',
						method : "POST",
						async : false,
						params : {
							id : id,
							flag : flag
						},
						success : function(response, options) {
							var o = Ext.util.JSON.decode(response.responseText);
							if (!o.success) {
								Ext.Msg.alert('提示', msg + '失败！');
							} else {
								Ext.Msg.alert('提示', msg + '成功！');
								ds.reload({
											params : getQueryTestParams(),
											callback : function(r, options,
													success) {
												initInfoList(r, options,
														success);
											}
										});
							}
						}
					});
		}
	});
}

function handleEdit(id) {
	var formUrl = context + '/app/svaction.do?method=edit&id=' + id;

	var userRating = new Ext.form.ComboBox({
				id : '_rating',
				name : 'userrating',
				fieldLabel : '级别',
				xtype : 'combo',
				selectOnFocus : true,
				emptyText : '请选择..',
				forceSelection : true,
				triggerAction : 'all',
				mode : 'local', // 数据模式,local为本地模式
				valueField : 'id', // 提交表单时，下拉框的值
				displayField : 'name', // 显示在页面上下拉框的值
				editable : false,
				allowBlank : false,
				store : new Ext.data.SimpleStore({ // 填充的数据
					fields : ['id', 'name'],
					data : [['2', '监理员'], ['1', '总监']]
				}),
				listeners : {
					select : function(combo, record, index) {
						// alert(record.data.id);
						// alert(record.data.name);
						editForm.form.findField('rating')
								.setValue(record.data.id);
					}
				}
			});

	var cellist = selitemlist('监理标段', 'nubdid', 'nubd', 'nubditemid',
			'nubditem', '', true, userId);

	var editForm = new Ext.FormPanel({
		labelWidth : 100, // label settings here cascade
		// unless
		// overridden
		frame : false,
		bodyStyle : 'padding:5px 5px 0',
		width : 350,
		defaults : {
			width : 230
		},
		defaultType : 'textfield',

		items : [{
					fieldLabel : '姓名',
					id : 'uname',
					name : 'uname',
					allowBlank : false
				}, new Ext.form.RadioGroup({
							fieldLabel : "性别",
							// //RadioGroup.fieldLabel 标签与
							// Radio.boxLabel 标签区别
							items : [new Ext.form.Radio({ // 以上相同
										id : "branch1",
										boxLabel : "男",
										name : "sex",
										inputValue : "男",
										checked : 'checked',
										listeners : {
											check : function(checkbox, checked) {
												if (checked) {

												}
											}
										}
									}), new Ext.form.Radio({ // 三个必须项
										id : "branch0",
										// checked : true, //
										// 设置当前为选中状态,仅且一个为选中.
										boxLabel : "女", // Radio标签
										name : "sex", // 用于form提交时传送的参数名
										inputValue : "女", // 提交时传送的参数值
										listeners : {
											check : function(checkbox, checked) { // 选中时,调用的事件
												if (checked) {

												}
											}
										}
									})]
						}), userRating, {
					fieldLabel : '电话',
					id : 'uphone',
					name : 'uphone',
					allowBlank : false
				}, {
					fieldLabel : '设备编号',
					id : 'numcode',
					name : 'numcode',
					allowBlank : false
				}, cellist, {
					xtype : 'hidden',
					name : 'nubdid',
					id : 'nubdid'
				}, {
					xtype : 'hidden',
					name : 'nubd',
					id : 'nubd'
				}, {
					xtype : 'hidden',
					name : 'nubditemid',
					id : 'nubditemid'
				}, {
					xtype : 'hidden',
					name : 'nubditem',
					id : 'nubditem'
				}, {
					xtype : 'hidden',
					name : 'rating',
					id : 'rating'
				}]
	});

	var win = new Ext.Window({
		renderTo : Ext.getBody(),
		layout : 'fit',
		width : 450,
		height : 350,
		title : '监理人员信息管理',
		resizable : true,
		plain : true,
		modal : true,
		listeners : {
			'show' : function(s) {
				editForm.getForm().load({
							url : encodeURI(formUrl),
							waitTitle : '提示',
							waitMsg : '正在加载数据,请稍候...',
							animEl : "loding",
							success : function(form, action) {
								var resultInfo = listSimpleJson(action.result.data);

								/* 性别 */
								var gbranch = resultInfo.get("sex");

								if (gbranch == "女") {
									Ext.get("branch0").dom.checked = true;
								} else if (gbranch == "男") {
									Ext.get("branch1").dom.checked = true;
								}
							},
							failure : function(form, action) {
								Ext.Msg.alert('获取监理信息异常');
								win.close();
							}
						});
			}
		},
		items : [editForm],

		buttons : [{
			id : 'updateButton',
			text : '保 存',
			handler : function() {
				if (editForm.getForm().isValid()) {
					Ext.MessageBox.wait('提交保存过程中...');

					editForm.getForm().submit({
						url : context + '/app/svaction.do?method=update',
						method : "POST",
						params : {
							rid : id
						},
						success : function(form, action) {
							Ext.MessageBox.hide();
							ds.reload({
										params : getQueryTestParams(),
										callback : function(r, options, success) {
											initInfoList(r, options, success);
										}
									});
							win.close();
						},
						failure : function(form, action) {
							Ext.MessageBox.hide();
							if (action.result.errCode == '0') {
								Ext.Msg.alert('提示', '您没有增加监理的权限！');
							} else if (action.result.errCode == '-1') {
								Ext.Msg.alert('提示', '登录帐号重复,请重新设定！');
							} else if (action.result.errCode == '-2') {
								Ext.Msg.alert('提示', '设备编号已被占用,请重新设定！');
							} else {
								Ext.Msg.alert('提示', '未知的错误异常！');
							}
						}
					});
				}
			}
		}, {
			text : '重 置',
			handler : function() {
				editForm.form.reset();
			}
		}, {
			text : '关 闭',
			handler : function() {
				win.close();
			}
		}]
	});

	win.show(this);
}